package com.kitty.game.fight.factory;

import com.kitty.game.fight.bean.Fight;
import com.kitty.game.utils.Const;

import org.slf4j.Logger;

import java.util.HashMap;
import java.util.Map;


import com.kitty.game.fight.factory.MirrorFightFactory;
import com.kitty.game.fight.factory.NewBossFightFactory;
import com.kitty.game.fight.factory.NewComerFightFactory;
import com.kitty.game.fight.factory.TeamPkFightFactory;
import com.kitty.game.fight.factory.TowerFightFactory;
import com.kitty.game.fight.factory.WildMonsterFightFactory;

import static com.kitty.game.utils.Const.*;

public abstract class FightFactory {



    private static Map<Integer, FightFactory> factorys = new HashMap<>();

    static {
        factorys.put(Const.fightType_shuadao, new NewBossFightFactory());
        factorys.put(Const.fightType_chubao, new NewBossFightFactory());
        factorys.put(Const.fightType_xiuxing, new NewBossFightFactory());
        factorys.put(Const.fightType_shijuezhen, new NewBossFightFactory());
        factorys.put(Const.fightType_xuanshang, new NewBossFightFactory());
        factorys.put(Const.fightType_xing, new NewBossFightFactory());
        factorys.put(Const.fightType_xinjun, new TowerFightFactory());
        factorys.put(Const.fightType_songshu, new NewComerFightFactory());
        factorys.put(Const.fightType_PK, new TeamPkFightFactory());
        factorys.put(Const.fightType_zhangmen, new MirrorFightFactory());
        factorys.put(Const.fightType_monster, new WildMonsterFightFactory());
        factorys.put(Const.fightType_shanggu, new NewBossFightFactory());
        factorys.put(Const.fightType_wannian, new NewBossFightFactory());
        factorys.put(Const.fightType_yingxionghui, new MirrorFightFactory());
        factorys.put(Const.fightType_zhengdaodian, new MirrorFightFactory());
        factorys.put(Const.fightType_shidao_yuanmo, new NewBossFightFactory());
        factorys.put(Const.fightType_petFly, new NewComerFightFactory());
        factorys.put(Const.fightType_partyDaily, new NewBossFightFactory());
        factorys.put(Const.fightType_superboss, new NewBossFightFactory());
        factorys.put(Const.fightType_forcePK, new TeamPkFightFactory());
        factorys.put(Const.fightType_shidao_pk, new TeamPkFightFactory());
        factorys.put(Const.fightType_devil, new NewBossFightFactory());
        factorys.put(Const.fightType_mapGuardian, new MirrorFightFactory());
        factorys.put(Const.fightType_month_shidao_yuanmo, new NewBossFightFactory());
        factorys.put(Const.fightType_month_shidao_pk, new TeamPkFightFactory());
        factorys.put(Const.fightType_pirate, new NewBossFightFactory());
        factorys.put(Const.fightType_zhanShen, new NewBossFightFactory());
        factorys.put(Const.fightType_caiShen, new NewBossFightFactory());
        factorys.put(Const.fightType_fuxing, new NewBossFightFactory());
        factorys.put(Const.fightType_qisha, new NewBossFightFactory());
        factorys.put(Const.fightType_tianbingshenjiang, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.kuangshi, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.baigu, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.baihua, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.ciwei, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.xiangjing, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.zhuyao, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.kongque, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.luocha, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.niumo, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.yecha, new NewBossFightFactory());//百年狂狮
        factorys.put(Const.luobotaozi, new NewBossFightFactory());//萝卜桃子
        factorys.put(Const.mijing, new NewBossFightFactory());//萝卜桃子

        factorys.put(Const.fightType_yabiao, new NewBossFightFactory());//押镖
        factorys.put(Const.jiutian, new NewBossFightFactory());
        /*升级幻境*/
        factorys.put(Const.fightType_elves, new NewBossFightFactory());
        /* 修法任务需要指定为普通BOSS*/
        factorys.put(fightType_xiufa, new NewBossFightFactory());
        /*炼狱冥炎*/
        factorys.put(Const.fightType_lymy, new NewBossFightFactory());
        /*二星炼狱冥炎*/
        factorys.put(Const.fightType_lymy2, new NewBossFightFactory());
        /*吞天魔龙*/
        factorys.put(Const.molongtuntian, new NewBossFightFactory());
        /*二星吞天魔龙*/
        factorys.put(Const.molongtuntian2, new NewBossFightFactory());
        /*魔龙之尾*/
        factorys.put(Const.molongzhiwei, new NewBossFightFactory());
        /*二星魔龙之尾*/
        factorys.put(Const.molongzhiwei2, new NewBossFightFactory());
        /*魔龙之眼*/
        factorys.put(Const.molongzhiyan, new NewBossFightFactory());
        /*二星魔龙之眼*/
        factorys.put(Const.molongzhiyan2, new NewBossFightFactory());
        /*魔龙之首*/
        factorys.put(Const.molongzhishou, new NewBossFightFactory());
        /*二星魔龙之首*/
        factorys.put(Const.molongzhishou2, new NewBossFightFactory());
        /*魔龙之爪*/
        factorys.put(Const.molongzhizhua, new NewBossFightFactory());
        /*二星魔龙之爪*/
        factorys.put(Const.molongzhizhua2, new NewBossFightFactory());
        /*九幽大帝*/
        factorys.put(Const.jiuyou, new NewBossFightFactory());
        /*真武大帝*/
        factorys.put(Const.zhenwu, new NewBossFightFactory());
        /*邪灵大帝*/
        factorys.put(Const.xieling, new NewBossFightFactory());
        /*杀戮大帝*/
        factorys.put(Const.shalu, new NewBossFightFactory());
        /*大日金乌*/
        factorys.put(Const.darijinwu, new NewBossFightFactory());
        /*天界叛逆*/
        factorys.put(Const.fightType_daysoldier, new NewBossFightFactory());
        /*地府叛逆*/
        factorys.put(Const.fightType_Undergroundrebels, new NewBossFightFactory());
        /*异族入侵*/
        factorys.put(Const.fightType_Alienintrusion, new NewBossFightFactory());
        /*天界杨戬*/
        factorys.put(Const.tianyangjian, new NewBossFightFactory());
        /*天界哪吒*/
        factorys.put(Const.tiannezha, new NewBossFightFactory());
        /*天界孔宣*/
        factorys.put(Const.tiankongxuan, new NewBossFightFactory());
        /*天界太白*/
        factorys.put(Const.tiantaibai, new NewBossFightFactory());
        /*天界李靖*/
        factorys.put(Const.tianlijing, new NewBossFightFactory());
        /*天界雷震子*/
        factorys.put(Const.tianleizhenzi, new NewBossFightFactory());
        /*天界天帝*/
        factorys.put(Const.tiandi, new NewBossFightFactory());
        /*镇妖塔*/
        factorys.put(Const.fightType_Zhengyaotaoyaoguai, new NewBossFightFactory());
        /*桃柳林杀鬼*/
        factorys.put(Const.getFightType_Taoliulinshagui, new NewBossFightFactory());
        /*变异星君*/
        factorys.put(Const.fightType_bianyixingun, new NewBossFightFactory());
        /*北海沙滩烟花年兽*/
        factorys.put(Const.fightType_yanhuan_nianshou, new NewBossFightFactory());
        /*噬地*/
        factorys.put(Const.shidi, new NewBossFightFactory());
    }
    public abstract Fight create(int mapId, Object... params);

    public static FightFactory getFightFactory(int type) {
        return factorys.get(type);
    }

}
